
import java.sql.*;

import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;

/*
 * To change this template, choose Tools | Templates and open the template in
 * the editor.
 */
/**
 *
 * @author enrico
 */
public class ListaLibriView extends TableView<LibroModel> {

  private ObservableList<LibroModel> data;

  public ListaLibriView(String SQL) throws Exception {
    //bibliotecaNumero = nBiblio;
    //Text category = new Text("Sezione " + String.valueOf(bibliotecaNumero));

    data = FXCollections.observableArrayList();
    try {
      Class.forName("org.sqlite.JDBC");
      Connection conn = DriverManager.getConnection("jdbc:sqlite:lib/biblioteche.db");
      Statement stat = conn.createStatement();
      ResultSet rs = stat.executeQuery(SQL);

      while (rs.next()) {
        String rientrato = "-";
        try {
          rientrato = rs.getString("rientrato");
        } catch(java.sql.SQLException e) {
          
        }
        data.add(new LibroModel(rs.getString("ID"), rs.getString("PR"), rs.getString("SC"), rs.getString("PRSC"),
                rs.getString("Quanti"), rs.getString("Titolo"), rs.getString("Sottotitolo"), rs.getString("Autore"),
                rs.getString("Editore"), rs.getString("Anno"), rs.getString("Und"), rs.getString("Sezione"), rs.getString("X")));
      }
      rs.close();
      conn.close();
    } catch (Exception exc) {
      System.out.println("LLV constructor ->"+exc.getMessage());
      exc.printStackTrace();
    }
    //category.setId("titolo");
    TableColumn sezione = new TableColumn("Sez");
    sezione.setCellValueFactory(new PropertyValueFactory<LibroModel, String>("Sezione"));
    sezione.setPrefWidth(30);
    
    TableColumn titolo = new TableColumn("Titolo");
    titolo.setCellValueFactory(new PropertyValueFactory<LibroModel, String>("Titolo"));
    titolo.setPrefWidth(190);

    TableColumn autore = new TableColumn("Autore");
    autore.setCellValueFactory(new PropertyValueFactory<LibroModel, String>("Autore"));
    autore.setPrefWidth(190);

    TableColumn sottotitolo = new TableColumn("Sottotitolo");
    sottotitolo.setCellValueFactory(new PropertyValueFactory<LibroModel, String>("Sottotitolo"));
    sottotitolo.setPrefWidth(190);

    //TableColumn riferimenti = new TableColumn("Riferimenti");
    TableColumn pr = new TableColumn("PR");
    pr.setPrefWidth(40);
    pr.setCellValueFactory(new PropertyValueFactory<LibroModel, String>("PR"));
    
    /*TableColumn sc = new TableColumn("SC");
    sc.setPrefWidth(40);
    sc.setCellValueFactory(new PropertyValueFactory<LibroModel, String>("SC"));
    
    TableColumn prsc = new TableColumn("PRSC");
    prsc.setPrefWidth(40);
    prsc.setCellValueFactory(new PropertyValueFactory<LibroModel, String>("PRSC"));
    
    TableColumn und = new TableColumn("Und");
    und.setPrefWidth(40);
    und.setCellValueFactory(new PropertyValueFactory<LibroModel, String>("Und"));
    
    riferimenti.getColumns().addAll(pr, sc, prsc, und);*/

    /*TableColumn prestato = new TableColumn("Prestato");
    prestato.setPrefWidth(80);
    prestato.setCellValueFactory(new PropertyValueFactory<LibroModel, String>("Prestato"));
    */
    this.setItems(data);
    this.getColumns().addAll(sezione, titolo, sottotitolo, autore, pr);//, prestato);

  }

  public void goToBook(LibroModel lm) {
    int i;
    for (i=0; i<data.size(); i++) {
      LibroModel temp = data.get(i);
      if (temp.getID().equals(lm.getID())) break;
    }
    
    this.getSelectionModel().select(i);
    this.scrollTo(i);
  }
  
  public ObservableList getData() {
    return data;
  }

  void setPrestato(int codiceLibro) {
    for (int g = 0; g<data.size(); g++) {
      LibroModel lm = data.get(g);
      if (Integer.parseInt(lm.getID())==codiceLibro) {
        lm.setPrestato(true);
        break;
      }
    }
  }

  void substitute(LibroModel lmn, String id) {
    for (int lib = 0; lib<data.size(); lib++) {
      LibroModel lmv = data.get(lib);
      if (lmv.getID().equalsIgnoreCase(lmn.getID())) {
        // è questo
        data.remove(lmv);
        data.add(lib, lmn);
        break;
      }
    }
  }
}
